﻿using System.ComponentModel.Design;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using NerdWare.Crm2011VsTools.Controls;
using NerdWare.Crm2011VsTools.Globals;

namespace NerdWare.Crm2011VsTools.ToolWindows
{
    [Guid(GuidList.CrmExplorerToolWindowPersistanceString)]
    public class CrmExplorerToolWindow : ToolWindowPane
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="CrmExplorerToolWindow"/> class.
        /// </summary>
        public CrmExplorerToolWindow() :
            base(null)
        {
            // Set the window title reading it from the resources.
            this.Caption = Resources.ToolWindowTitle;
            // Set the image that will appear on the tab of the window frame
            // when docked with an other window
            // The resource ID correspond to the one defined in the resx file
            // while the Index is the offset in the bitmap strip. Each image in
            // the strip being 16x16.
            this.BitmapResourceID = 301;
            this.BitmapIndex = 1;

            this.ToolBar = new CommandID(GuidList.Crm2011VsToolsCmdSet, PkgCmdIDList.CrmExplorerToolbarID);
            this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;

            Mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;

            // This is the user control hosted by the tool window; Note that, even if this class implements IDisposable,
            // we are not calling Dispose on this object. This is because ToolWindowPane calls Dispose on 
            // the object returned by the Content property.
            base.Content = new CrmExplorerControl(this);
        }

        internal OleMenuCommandService Mcs;

        internal new object GetService(System.Type type)
        {
            return base.GetService(type);
        }
    }
}
